package evaluation;

import java.util.ArrayList;

import modex.Paragraphe;

public class Evaluation {
	
	private ArrayList<Paragraphe> parasPertinents;

	public Evaluation(ArrayList<Paragraphe> parasPertinents) {
		this.parasPertinents = parasPertinents;

		System.out.println("Jugement de pertinence: " + this.parasPertinents.size() + " paragraphes pertinents.");
	}
	
	public float calculerRappel(ArrayList<Paragraphe> paras){
		int nbPertinentsSelectionnes = 0;
		
		for(Paragraphe p : paras) {
			if(estPertinent(p)) { nbPertinentsSelectionnes++; }
		}
		
		System.out.println("Nombre de paragraphes pertinents selectionnes :" + nbPertinentsSelectionnes);
		
		return ((float) nbPertinentsSelectionnes / (float) this.parasPertinents.size());
	}
	
	public float calulerPrecision(ArrayList<Paragraphe> paras){
		int nbParasSelectionnes = paras.size();
		int nbPertinentsSelectionnes = 0;
		
		for(Paragraphe p : paras) {
			if(estPertinent(p)) { nbPertinentsSelectionnes++; }
		}
		return ((float) nbPertinentsSelectionnes / (float) nbParasSelectionnes);
	}
	
	private boolean estPertinent(Paragraphe p) {
		for(Paragraphe paraP : this.parasPertinents) {
			/*if(p.getIdDocument() == 37 && paraP.getIdDocument() == 37){
				System.out.println(paraP.getIdDocument()+ " " + paraP.getxPath());
				System.out.println(p.getIdDocument()+ " " + p.getxPath());
			}*/
			if(p.getIdDocument() == paraP.getIdDocument()
					&& p.getxPath().equals(paraP.getxPath())) return true;
		}		
		return false;
	}
}
